home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 52
/
Amiga Format AFCD52 (Issue 136, May 2000).iso
/
-serious-
/
programming
/
other
/
pmdev
/
c
/
demos
/
layout.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-02-28
|
4KB
|
200 lines
/*
*
* $VER: Layout.c 1.0 (16.07.99)
*
* Popup Menu example program
*
* ©1996-1998 Henrik Isaksson
* All Rights Reserved.
*
*/
#include <intuition/intuition.h>
#include <exec/memory.h>
#include <proto/intuition.h>
#include <proto/exec.h>
#include <clib/alib_protos.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <libraries/pm.h>
#include <proto/pm.h>
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct PopupMenuBase *PopupMenuBase;
struct Window *w;
struct PopupMenu *MakeTestMenu(void);
void PrintMenu(struct PopupMenu *pm, int level);
void main()
{
struct IntuiMessage *im,imsg;
struct PopupMenu *p;
BOOL r=TRUE;
PopupMenuBase=(struct PopupMenuBase *)OpenLibrary(POPUPMENU_NAME,POPUPMENU_VERSION); // Open the library
if(PopupMenuBase) {
IntuitionBase=(struct IntuitionBase *)PopupMenuBase->pmb_IntuitionBase; // We let popupmenu.library open the libraries we need
GfxBase=(struct GfxBase *)PopupMenuBase->pmb_GfxBase; // They remain valid until the library is closed!
p=MakeTestMenu(); // Declared at the end of this file.
if(p) {
w=OpenWindowTags(NULL, WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_MOUSEBUTTONS|IDCMP_VANILLAKEY, // Open a little window
WA_RMBTrap, TRUE,
WA_DragBar, TRUE,
WA_Width, 150,
WA_Height, 100,
WA_Left, 0,
WA_Top, 100,
WA_Title, "Layout",
WA_CloseGadget, TRUE,
TAG_DONE);
if(w) {
while(r) {
WaitPort(w->UserPort); // Wait for a message
while((im=(struct IntuiMessage *)GetMsg(w->UserPort))) { // Get the message
CopyMem(im,&imsg,sizeof(struct IntuiMessage)); // Copy the contents of it
ReplyMsg((struct Message *)im); // Reply the message
if(imsg.Class==IDCMP_MOUSEBUTTONS) {
PM_OpenPopupMenu(w,
PM_Menu, p,
TAG_DONE);
}
if(imsg.Class==IDCMP_CLOSEWINDOW) r=FALSE; // See if the user wants to quit
}
}
CloseWindow(w);
} else printf("Window error!\n");
PM_FreePopupMenu(p);
} else printf("Menu error!\n");
CloseLibrary((struct Library *)PopupMenuBase);
}
}
struct PopupMenu *MakeTestMenu()
{
struct PopupMenu *p;
p=PMMenu("Group Layout"),
PMHoriz,
PMMembers,
PMItem("Left"), PM_Center, TRUE, End,
PMVert,
PMMembers,
PMItem("Item 1"), PM_Center, TRUE, End,
PMItem("Item 2"), PM_Center, TRUE, End,
PMItem("Item 3"), PM_Center, TRUE, End,
PMItem("Item 4"), PM_Center, TRUE, End,
PMItem("Item 5"), PM_Center, TRUE, End,
PMItem("Item 6"), PM_Center, TRUE, End,
End,
End,
PMItem("Right"), PM_Center, TRUE, End,
End,
End,
PMBar, End,
PMVert,
PMMembers,
PMHoriz,
PMMembers,
PMColBox(1), End,
PMColBox(2), End,
PMColBox(3), End,
PMColBox(4), End,
PMColBox(5), End,
PMColBox(6), End,
PMColBox(7), End,
PMColBox(8), End,
PMColBox(9), End,
PMColBox(0), End,
End,
End,
PMHoriz,
PMMembers,
PMColBox(11), End,
PMColBox(12), End,
PMColBox(13), End,
PMColBox(14), End,
PMColBox(15), End,
PMColBox(16), End,
PMColBox(17), End,
PMColBox(18), End,
PMColBox(19), End,
PMColBox(10), End,
End,
End,
PMHoriz,
PMMembers,
PMColBox(21), End,
PMColBox(22), End,
PMColBox(23), End,
PMColBox(24), End,
PMColBox(25), End,
PMColBox(26), End,
PMColBox(27), End,
PMColBox(28), End,
PMColBox(29), End,
PMColBox(20), End,
End,
End,
PMHoriz,
PMMembers,
PMColBox(31), End,
PMColBox(32), End,
PMColBox(33), End,
PMColBox(34), End,
PMColBox(35), End,
PMColBox(36), End,
PMColBox(37), End,
PMColBox(38), End,
PMColBox(39), End,
PMColBox(30), End,
End,
End,
PMHoriz,
PMMembers,
PMColBox(41), End,
PMColBox(42), End,
PMColBox(43), End,
PMColBox(44), End,
PMColBox(45), End,
PMColBox(46), End,
PMColBox(47), End,
PMColBox(48), End,
PMColBox(49), End,
PMColBox(40), End,
End,
End,
End,
End,
PMBar, End,
PMItem("Quit"), End,
End;
return p;
}